package collection01;

import java.util.ArrayList;
import java.util.Collection;

/**
 * 集合的判断功能:
 *    boolean contains(Object o)
 *           判断这个集合中是否包含指定的元素,如果包含返回true
 *           否则返回false
 *           contains方法底层判断元素是否包含在集合中,它其实依赖的是存储元素的boolean equals(Object obj)方法去比较
 *           Person p1 = new Person("无忌", 19);
 *           Person p2 = new Person("敏敏", 18);
 *          c.add(p1);  //p3和p1比较其实就是调用equals方法 相当于 p3.equals(p1),Person类中默认equals()方法比较内存地址值
 *         c.add(p2);//p3和p2比较其实就是调用equals方法 相当于 p3.equals(p2),Person类中默认equals()方法比较内存地址值
 *
 *       Person p3 = new Person("无忌", 19);
 *       System.out.println(c.contains(p3)); //当所有元素都调用equals()方法与p3比较,都返回false,说明这个集合中不存在p3
 *                                            //最终contains方法会false
 *    boolean isEmpty()
 *            判断集合中是否有元素,如果有元素,那么返回false
 *            如果集合中没有元素,那么返回true
 */
public class CollectionDemo02 {
    public static void main(String[] args) {
        //method01();
        //method02();
        Person p1 = new Person("无忌", 19);
        Person p2 = new Person("敏敏", 18);
        Collection c  = new ArrayList();
        c.add(p1); //Object e = new Person("无忌", 19) 多态形式传参
        c.add(p2);
        System.out.println(c);//[collection01.Person@4554617c, collection01.Person@74a14482]
                             //集合中的元素也会调用toString()方法

        Person p3 = new Person("无忌", 19);
        System.out.println(c.contains(p3));//当所有元素都调用equals()方法与p3比较,都返回false,说明这个集合中不存在p3
                                             //最终contains方法会false
                                               //当我们重写了Person类中equals()方法,比较姓名和年龄,此时p3的姓名和年龄和集合中
                                              //p1的姓名相同,所以认为在集合中包含这个人,最终contains返回true
        Person p4 = new Person("无忌", 21);
        System.out.println(c.contains(p4));//false
    }

    private static void method02() {
        Collection c = new ArrayList();
        c.add("张三");
        c.add("李四");
        c.add("王五");
        System.out.println(c.contains("李四"));//true
        System.out.println(c.contains("赵六"));//false
    }

    private static void method01() {
        Collection c = new ArrayList();
        c.add("abc");
        c.add("def");
        System.out.println(c.isEmpty());//false
        c.clear();
        System.out.println(c.isEmpty());//true
    }
}
